package exam.dao;

import org.apache.ibatis.annotations.Param;
import org.example.domain.Exam;
import org.example.domain.Student_Exam;
import org.example.dto.ExamPaperDTO;
import org.example.dto.ExamStudentDTO;
import org.example.vo.ExamBindClassVO;

import java.util.List;
import java.util.Map;

public interface ExamDao {
    List<Exam> query(Map<String,Object> map);
    void addSave(Exam exam);
    Exam selectById(long id);
    void updateExamName(@Param("id") Long id, @Param("name") String name);
    void editSave(Exam exam);
    void add(List<Student_Exam> studentExams);
    void remove(List<Student_Exam> studentExams);
    List<ExamBindClassVO> selectBindClassById(Long examId);
    void removeExam(Long examId);
    void releaseExam(Long examId);
    List<Map<String,String>> selectExamByStudentId(Map<String,Object> param);
    void updateExamStatus(@Param("examId")Long examId,@Param("status")String status);
    List<ExamPaperDTO> selectFinishExamClass(Long examId);
    List<ExamStudentDTO> selectExamStudentList(@Param("examId")Long examId,@Param("className")String className);
    ExamStudentDTO selectOneExamStudent(@Param("examId")Long examId,@Param("studentId")Long studentId);
    void examPaperSubmit(Long examId);
    List<Integer> selectStudentCurrYear(Long studentId);
    List<ExamPaperDTO> selectExamByYear(@Param("studentId") Long studentId,@Param("year") Integer year);
}
